package com.guodi.map.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.guodi.core.secure.utils.AuthUtil;
import com.guodi.map.entity.MapSceneConfig;
import com.guodi.map.mapper.MapSceneConfigMapper;
import com.guodi.map.service.IMapSceneConfigService;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * @author pwm
 */
@Service
public class MapSceneConfigServiceImpl extends ServiceImpl<MapSceneConfigMapper, MapSceneConfig> implements IMapSceneConfigService {

    @Override
    public boolean saveOne(String sceneId) {
        MapSceneConfig mapSceneConfig = new MapSceneConfig();
        mapSceneConfig.setSceneId(sceneId);
        prepareData(mapSceneConfig, true);
        this.save(mapSceneConfig);
        return true;
    }

    @Override
    public void removeBySceneId(String id) {
        LambdaQueryWrapper<MapSceneConfig> wrapper = new QueryWrapper<MapSceneConfig>().lambda();
        wrapper.eq(MapSceneConfig::getSceneId, id);
        this.remove(wrapper);
    }

    @Override
    public boolean prepareData(MapSceneConfig mapSceneConfig, boolean isSave) {
        if (isSave) {
            mapSceneConfig.setCreator(AuthUtil.getUserId().toString());
            mapSceneConfig.setCreateTime(new Date());
            //防止误修改
            mapSceneConfig.setModifier(null);
            mapSceneConfig.setModifyTime(null);
        } else {
            mapSceneConfig.setModifier(AuthUtil.getUserId().toString());
            mapSceneConfig.setModifyTime(new Date());
            //防止误修改
            mapSceneConfig.setCreator(null);
            mapSceneConfig.setCreateTime(null);
        }
        return true;
    }

    @Override
    public MapSceneConfig selectBySceneCode(String sceneCode) {
        return baseMapper.selectBySceneCode(sceneCode);
    }

    @Override
    public MapSceneConfig selectBySceneId(String sceneId) {
        LambdaQueryWrapper<MapSceneConfig> wrapper = new QueryWrapper<MapSceneConfig>().lambda();
        wrapper.eq(MapSceneConfig::getSceneId, sceneId);
        return this.getOne(wrapper);
    }
}